package org.wwb.antbox.user.iservice.menu;

import org.ant.commons.models.model.BaseIdModel;
import org.ant.commons.models.result.BaseEditResult;
import org.ant.commons.models.result.BasePageResult;
import org.ant.commons.models.result.BaseResult;
import org.ant.iservice.common.IBaseService;
import org.wwb.antbox.user.model.menu.entity.SysMenu;
import org.wwb.antbox.user.model.menu.model.*;
import org.wwb.antbox.user.model.menu.view.SysMenuPageView;
import org.wwb.antbox.user.model.menu.view.SysMenuTreeView;
import org.wwb.antbox.user.model.menu.view.SysMenuTreeViewNew;
import org.wwb.antbox.user.model.system.entity.SysSystem;
import java.util.List;
import java.util.Map;

/**
 * @Author Bond
 * @Date: 2019/10/4 19:55
 * @Description: 系统菜单接口
 */
public interface ISysMenuService extends IBaseService<SysMenu, String> {
    /**
     * 获取功能菜单表格树数据
     * @param sysSystemPageModel 分页查询参数模型
     * @return BasePageResult<SysMenuPageView>
     */
    BasePageResult<SysMenuPageView> getSysMenuTreeGrid(SysMenuTreeGridModel sysSystemPageModel);

    /**
     * 获取功能菜单树数据
     * @param sysMenuTreeModel 系统菜单树Model
     * @return BaseResult<List<SysMenuTreeView>>
     */
    BaseResult<List<SysMenuTreeView>> getSysMenuTree(SysMenuTreeModel sysMenuTreeModel);

    /**
     * 获取菜单树4添加角色
     * @param sysSystemList 系统集合
     * Map<String,List<SysMenuTreeViewNew>>
     * key: 系统编号
     * value：菜单树集合
     * @return BaseResult<Map<String,List<SysMenuTreeViewNew>>>
     */
    BaseResult<Map<String, List<SysMenuTreeViewNew>>> getSysMenuTree4AddRole(List<SysSystem> sysSystemList);

    /**
     * 添加功能菜单
     * @param sysMenuAddModel
     * @return BaseResult<Integer>
     */
    BaseResult<Integer> saveSysMenu(SysMenuAddModel sysMenuAddModel);

    /**
     * 删除系统
     * @param sysMenuDelModel
     * @return BaseResult<Integer>
     */
    BaseResult<Integer> delSysMenu(SysMenuDelModel sysMenuDelModel);

    /**
     * 跳转修改系统
     * @param baseIdModel id
     * @return
     */
    BaseEditResult doEditSysMenu(BaseIdModel<String> baseIdModel);

    /**
     * 编辑系统
     * @param sysMenuEditModel
     * @return BaseResult<Integer>
     */
    BaseResult<Integer> editSysMenu(SysMenuEditModel sysMenuEditModel);

}
